// 
// businessModuleSupport.js
// 海石后台管理
// 
// 2025/01/08.
// 

/**
 * 业务支持
 * @param modules 业务下的目录模块
 * @returns {Promise<*[]>}
 */
export async function businessSupport(modules) {
    const children = []
    for (const module in modules) {
        const file = await modules[module]()
        const path = module.replace("./", "").replace("/modules.js", "")
        children.push(await file.default(path))
    }
    return children
}

/**
 * 目录支持
 * @param name 目录名称（对应着生成菜单后的菜单名称）
 * @param type 目录类型（对应着生成菜单后的菜单类型）
 * @param path 目录路径（对应着生成菜单后的菜单路径）
 * @param module 目录下的页面模块
 * @returns {Promise<{name, path: string, type, code: string, children: *[]}>}
 */
export async function directorySupport(name, type, path, module) {
    const children = []
    for (const page in module) {
        const file = await module[page]()
        const filePath = page.replace("./", "").replace("/modules.js", "")
        children.push(file.default(filePath, path))
    }
    return {
        name,
        path: `/${path}`,
        type,
        code: path,
        children
    }
}

/**
 * 页面支持
 * @param name 页面名称（对应着生成菜单后的菜单名称）
 * @param type 页面类型（对应着生成菜单后的菜单类型）
 * @param openType 打开方式（对应着生成菜单后的菜单类型 1 组件 2 内链 3 外链）
 * @param path 页面路径（对应着生成菜单后的菜单路径）
 * @param parentPath 上级目录路径（对应着生成菜单后的上级目录路径）
 * @param children 页面下的按钮 （对应着生成菜单后的页面子菜单）
 * @returns {{name, path: string, type, code: string, children: *[]}}
 */
export function pageSupport(name, type, openType, path, parentPath, children = []) {
    return {
        name,
        code: `${parentPath}${path}`,
        path: `/${parentPath}/${path}/Index`,
        type,
        openType: openType,
        children: children.map(item => {
            item.code = `${parentPath}${path}${item.code.toFirstUpperCase()}`
            item.apis = item.apis.map(item => item.replace("/api", "api"))
            return item
        })
    }
}